/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.tbp.gui.table;

import br.com.tbp.model.domain.ItemDePedido;
import br.com.tbp.model.domain.Pedido;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author Diego
 */
public class ItensDePedidoTableModel extends AbstractTableModel {

    //private List<ItemDePedido> lista;
    private Pedido pedido;

    public ItensDePedidoTableModel(Pedido p) {
        this.pedido = p;
    }

    public int getRowCount() {
        return pedido.qtde_de_produtos();
    }

    public int getColumnCount() {
        return 6;
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        switch (columnIndex) {
            case 0:
                return Long.class;
            case 1:
                return String.class;
            case 2:
                return Integer.class;
            case 3:
                return String.class;
            case 4:
                return Boolean.class;
            case 5:
                return Integer.class;
        }
        return Object.class;
    }

    @Override
    public String getColumnName(int column) {
        switch (column) {
            case 0:
                return "ID produto";
            case 1:
                return "Produto";
            case 2:
                return "Quantidade";
            case 3:
                return "Condição";
            case 4:
                return "Port In?";
            case 5:
                return "Quantidade Port In";
        }
        return null;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        ItemDePedido item = this.getItem(rowIndex);
        if (item != null) {
            switch (columnIndex) {
                case 0:
                    return item.getProduto().getId();
                case 1:
                    return item.getProduto().getNome();
                case 2:
                    return item.getQtde();
                case 3:
                    return item.getCondicao().toString();
                case 4:
                    return item.isPortIn();
                case 5:
                    return item.getQtePortIn();
            }
        }
        return null;
    }

    public ItemDePedido getItem(int row) {
        if (row >= 0) {
            return pedido.getItem(row);
        }
        return null;
    }

    public void setQuantidadeParaItem(int qtde, int row) {
        ItemDePedido item = this.getItem(row);
        if (item != null) {
            item.setQuantidade(qtde);
            fireTableDataChanged();
        }
    }

    public void limpaQuantidades() {
        pedido.limpaQuantidadesDosItens();
        fireTableDataChanged();
    }

    public void setQuantidadeParaItens(int qtde, int[] rows) {
        if (rows.length > 0) {
            for (int row : rows) {
                ItemDePedido item = this.getItem(row);
                if (item != null) {
                    item.setQuantidade(qtde);
                }
            }
            fireTableDataChanged();
        }
    }

    public boolean removeItem(ItemDePedido item) {
        if (pedido.retiraItem(item)) {
            fireTableDataChanged();
            return true;
        }
        return false;
    }
}
